package com.zxn.kotlin.scenario

import com.zxn.kotlin.entity.UserEntity

//fun onItemClicked(onItemClick: (UserEntity, Int) -> Unit) {
//    val list = listOf(
//            UserEntity(100, "华晨宇", 30),
//            UserEntity(101, "张碧晨", 31),
//            UserEntity(103, "邓紫棋", 29),
//            UserEntity(103, "李宇春", 32)
//    )
//    onItemClick(list[0], 0)
//}

//fun main() {
//    val onItemClickListener: (UserEntity, Int) -> Unit = { item, position ->
//        println("item->$item,position:$position")
//    }
//    onItemClicked(onItemClickListener)
//}

//fun main() {
//    onItemClicked { item, position ->
//        println("item->$item,position:$position")
//    }
//}

//class Student {
//    val name = "s_name"
//    val age = 10
//}
//
//fun Student.test() = println("name -> ${this.name} \nage -> ${this.age}")
//
//fun main() {
//    val stu = Student()
//    stu.test()
//}

//fun main() {
//    var method = { num: Int -> println("method before $num") }
//    method = { println("method after $it") }
//    method(1)
//}

//fun <T, R> T.apply3(r: R, block: T.(R) -> R): R {
//    return block(r)
//}
//fun main() {
//    val str = "1234"
//    str.apply3(123) {
//        this.toInt() + it
//        //toInt() + it 等价
//    }.apply {
//        print("apply result->>>$this")
//    }
//}

//fun apply2(block: String.() -> Unit) {
//}
//fun main() {
//    apply2 {
//        val lenth = this.length
//        val str2 = this.substring(0, 3)
//        val charArra = this.toCharArray()
//    }
//}

//fun <T, R> T.apply3(r: R, block: T.(R) -> R): R {
//    return block(r)
//}
//
//fun main() {
//    val str = "1234"
//    str.apply3(123) {
//        this.toInt() + it
//        //toInt() + it 等价
//    }.apply {
//        print("apply result->>>$this")
//    }
//}

//fun <T, R, E> T.apply4(r: R, e: E, block: T.(R, E) -> R): R {
//    return block(r, e)
//}
//
//fun main() {
//    val str = "1234"
//    str.apply4(123, "12") { v1, v2 ->
//        toInt() + v1 + v2.toInt()
//    }.apply {
//        print("apply result->>>$this")
//    }
//}

